#include <iostream>
#include <signal.h>
#include <unistd.h>
#include <sys/types.h>
#include <cstring>

using namespace std;

void handler(int signo)
{
  cout << "process get a signal: " << signo << endl;
  exit(signo);
}

int main()
{
  int i = 1;
  for (; i <= 31; i++)
  {
    signal(i, handler);
  }

  while (true)
  {
    cout << "i am a process, i am running" << endl;
    sleep(1);
  }

  return 0;
}

// void myhandler(int signo)
// {
//   cout << "process get a signal: " << signo << endl;
//   exit(2);
// }

// int main()
// {

//   signal(6, myhandler);
//   int cnt = 5;
//   while (cnt--)
//   {
//     cout << "i am a process, i am runnning, i am happy" << endl;
//     sleep(1);
//     // if (cnt == 0)
//     //   raise(2);

//     if (cnt == 0)
//       abort();
//   }

//   return 0;
// }

// void Usage(char *argv[])
// {
//   cout << "Usage: " << endl;
//   cout << argv[0] << "   signum    pid" << endl
//        << endl;
// }

// int main(int argc, char *argv[])
// {
//   if (argc != 3)
//   {
//     Usage(argv);
//     exit(1);
//   }

//   int signum = stoi(argv[1]);
//   int pid = stoi(argv[2]);

//   int ret = kill(pid, signum);
//   if (ret == -1)
//   {
//     cout << "kill is failed" << endl;
//     exit(2);
//   }

//   return 0;
// }

// void myhandler(int signo)
// {
//   cout << "process get a signal: " << signo << endl;
//   exit(2);
// }

// int main()
// {
//   signal(SIGINT, myhandler);

//   while (true)
//   {
//     cout << "i am a process, pid: " << getpid() << endl;
//     sleep(1);
//   }

//   return 0;
// }